package cci;

import cdp.Marca;
import cdp.Produto;
import cdp.Relatorio;
import cgd.MarcaDao;
import cgd.ProdutoDao;
import cgd.RelatorioDao;
import java.util.List;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServletRequest;

@WebServlet(name = "ProdutoCtrl", urlPatterns = {"/Produto"})
public class ProdutoCtrl extends Controller {

    @Override
    protected String inserirOuAlterar(HttpServletRequest request) throws Exception {
        try {
            Produto produto;
            if (request.getParameter("id") == null) {
                produto = new Produto();
            } else {
                produto = ProdutoDao.getInstance().consultar(Integer.parseInt(request.getParameter("id")));
            }

            produto.setNome(request.getParameter("nome"));
            produto.setMarca(MarcaDao.getInstance().consultar(
                    Integer.parseInt(
                    request.getParameter("marca"))));
            produto.setPreco(Double.parseDouble(request.getParameter("preco")));
            produto.setQuantidade(Integer.parseInt((request.getParameter("quantidade"))));
            ProdutoDao.getInstance().salvar(produto);

            return "Operacao realizada com sucesso.";
        } catch (Exception e) {
            //TODO Tratar excecao
            e.printStackTrace();
            return "Erro ao realizar essa operacao.";
        }
    }

    @Override
    protected Object montar(HttpServletRequest request) throws Exception {
        request.setAttribute("listaMarcas", MarcaDao.getInstance().obterTodos());
        Produto produto = ProdutoDao.getInstance().consultar(
                Integer.parseInt(request.getParameter("id")));
        return produto;
    }

    @Override
    protected String excluir(HttpServletRequest request) throws Exception {
        Produto produto = ProdutoDao.getInstance().consultar(
                Integer.parseInt(request.getParameter("id")));
        ProdutoDao.getInstance().excluir(produto);
        return "Produto exluido com sucesso";
    }

    @Override
    protected Object montarLista() throws Exception {
        List<Produto> lista = ProdutoDao.getInstance().obterTodos();
        return (Object) lista;
    }

    @Override
    protected String getTipoControlador() {
        return "produto";
    }

    @Override
    protected void addParametros(HttpServletRequest request) {
        List<Marca> litaMarcas;
        try {
            litaMarcas = MarcaDao.getInstance().obterTodos();
            request.setAttribute("listaMarcas", litaMarcas);
        } catch (Exception ex) {
            ex.printStackTrace();
        }
    }

    @Override
    protected void getEnviarEmails(HttpServletRequest request) {
        List<Relatorio> litaRelatorios;
        try {
            litaRelatorios = RelatorioDao.getInstance().obterTodos();
            request.setAttribute("listaRelatorios", litaRelatorios);
        } catch (Exception ex) {
            ex.printStackTrace();
        }
    }
}
